# 元组的细节
# 1.如果我们需要一个空元组，可以通过()，或者 tuple()方式来定义
tuple1 = ()
tuple2 = tuple()
print(f"tuple1的内容是: {tuple1},类型是 :{type(tuple1)}")
print(f"tuple2的内容是: {tuple2},类型是 :{type(tuple2)}")

#  2.元组的元素可以有多个,而且数据类型没有限制(甚至可以嵌套元组)，允许有重复元素,并且是有序的
tuple3 = (1, 2.0, 3, "jack")
print(f"tuple3的内容是: {tuple3},类型是 :{type(tuple3)}")

# 嵌套元组
tuple4 = (1, 2, 3, (4, "haha", 6))
print(f"tuple4的内容是: {tuple4},类型是 :{type(tuple4)}")

# 3.元组的索引下标是从0开始的
# 4.元组索引必须在指定范围内使用否则会报错
tuple5 = (1, 2, 3, 4, 5)
# print(tuple5[5]) 这样是错误的

# 5.元组是不可变序列
tuple6 = (1, 2, 3, 4, 5)
# tuple6[0] = 100 这样是错误的

# 6.元组可以修改元组内list中的内容
tuple7 = (1, 2, [8.0, "jack"])
print(tuple7[2])  # 这里输出的是[8.0, 'jack']
#  如果想要输出列表中的内容
# 这表示是元组中的第3个元素 里面的 第一个元素
print(tuple7[2][0])  # 这里输出的是8.0

# 修改
tuple7[2][0] = 100
# 删除
del tuple7[2][0]
# 增加
tuple7[2].append("haha")
print(tuple7)

# 7.索引也可以从尾部开始最后一个元素的下标是-1 依然不能超出范围
tuple8 = (1, 2, 3, 4, 5)
print(tuple8[-1])

# 8.定义一个元素的元组，需要带上一个逗号
tuple9 = (1,)
# tuple9 = (1) 如果不带上逗号，那么就是int类型会爆粗
print(type(tuple9))
